CreateJob - 创建任务并返回任务ID

更新时间:

创建任务并返回任务ID。

调试

您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。

授权信息

下表是API对应的授权信息,可以在RAM权限策略语句的Action元素中使用,用来给RAM用户或RAM角色授予调用此API的权限。具体说明如下:

  • 操作:是指具体的权限点。
  • 访问级别:是指每个操作的访问级别,取值为写入(Write)、读取(Read)或列出(List)。
  • 资源类型:是指操作中支持授权的资源类型。具体说明如下:
    • 对于必选的资源类型,用背景高亮的方式表示。
    • 对于不支持资源级授权的操作,用全部资源表示。
  • 条件关键字:是指云产品自身定义的条件关键字。
  • 关联操作:是指成功执行操作所需要的其他权限。操作者必须同时具备关联操作的权限,操作才能成功。
操作访问级别资源类型条件关键字关联操作
edas:CreateSchedulerxJobCreatecreate
*全部资源
*

请求参数

名称类型必填描述示例值
RegionIdstring

地域 ID。

cn-hangzhou
Namespacestring

命名空间 ID,在控制台的命名空间页面中获取。

adcfc35d-e2fe-4fe9-bbaa-20e90ffc****
NamespaceSourcestring

特殊第三方才需要填写。

schedulerx
GroupIdstring

应用 ID,在控制台的应用管理页面中获取。

testSchedulerx.defaultGroup
JobTypestring

任务类型,目前支持以下几种任务类型:

  • java
  • python
  • shell
  • go
  • http
  • xxljob
  • dataworks
  • k8s
  • springschedule
枚举值:
  • pythonpython
  • xxljobxxljob
  • javajava
  • shellshell
  • golanggolang
  • gogo
  • httphttp
  • dataworksdataworks
java
Namestring

任务名。

helloworld
Descriptionstring

任务描述。

Test
ExecuteModestring

任务执行模式,目前支持以下几种任务执行模式:

  • 单机运行:standalone
  • 广播运行:broadcast
  • 可视化 MapReduce:parallel
  • MapReduce:batch
  • 分片运行:sharding
枚举值:
  • broadcast广播运行
  • parallel并行计算
  • grid内存网格
  • batch网格计算
  • standalone单机运行
  • sharding分片运行
standalone
ClassNamestring

任务接口类完整路径。

当您选择 Java 任务类型时,才有该字段且必须填写完整路径。

com.alibaba.schedulerx.test.helloworld
Contentstring
  • 任务类型选择为 python/shell/k8s 时,填写对应的脚本内容。
  • 任务类型为 golang 时,content 格式示例为 {"jobName":"HelloWorld"}
echo 'hello'
Parametersstring

用户自定义参数,运行时可以获取。

test
MaxConcurrencyinteger

最大同时运行实例数量,默认值为 1,即上次触发没有运行结束,即使到了运行时刻也不会进行下次触发。

1
MaxAttemptinteger

错误最大重试次数,根据业务需求填写,默认值为 0。

0
AttemptIntervalinteger

错误重试间隔,单位 s,默认值为 30。

30
PageSizeinteger

并行网格任务高级配置,单次拉取子任务数,默认值为 100。

100
ConsumerSizeinteger

并行网格任务高级配置,单机单次触发执行线程数,默认值为 5。

5
QueueSizeinteger

并行网格任务高级配置,子任务队列缓存上限,默认值为 10000。

10000
DispatcherSizeinteger

并行网格任务高级配置,子任务分发线程数,默认值为 5。

5
TimeTypeinteger

时间类型,目前支持以下几种时间类型:

  • cron:1
  • fixed_rate:3
  • second_delay:4
  • one_time :5
  • api:100
1
TimeExpressionstring

时间表达式,根据选择的时间类型设置时间表达式。

  • cron:填写标准的 cron 表达式,支持在线验证。
  • api:无时间表达式。
  • fixed_rate:填写具体固定频率值,单位 s。如 30 表示每隔 30s 触发一次。
  • second_delay:填写固定延迟多少秒执行一次(1s~60s 可选)。
  • one_time: 填写指定时间(yyyy-MM-dd HH:mm:ss)或者时间戳(毫秒),比如"2022-10-10 10:10:00"
0 0/10 * * * ?
Calendarstring

cron 类型可以选择填写自定义日历。

暂不支持,不用填写
DataOffsetinteger

cron 类型可以选择时间偏移,单位 s。

2400
Timezonestring

时区

GMT+8
TimeoutEnableboolean

超时报警开关。取值如下:

  • true:开启超时报警开关。
  • false:关闭超时报警开关。
false
Timeoutlong

超时阈值,单位 s,默认值 7200。

7200
TimeoutKillEnableboolean

超时终止开关。取值如下:

  • true:开启超时终止开关。
  • false:关闭超时终止开关。
false
FailEnableboolean

失败报警开关。取值如下:

  • true:开启失败报警开关。
  • false:关闭失败报警开关。
false
FailTimesinteger

连续失败报警次数

2
MissWorkerEnableboolean

是否开启无可用机器报警。

  • true:开启无可用机器报警开关。
  • false:关闭无可用机器报警开关。
false
SuccessNoticeEnableboolean

成功通知开关

false
SendChannelstring

告警通知渠道。

  • 按应用分组默认渠道:default。
  • 指定任务发送渠道:sms,mail,phone,webhook。
sms
TaskMaxAttemptinteger

并行网格任务高级配置,子任务失败重试次数 ,默认值为 0。

0
TaskAttemptIntervalinteger

并行网格任务高级配置,子任务失败重试间隔,默认值为 0。

0
ContactInfoarray<object>

任务联系人信息。

object

任务联系人信息。

UserPhonestring

报警接收手机号。

1381111****
UserNamestring

报警联系人姓名。

张三
UserMailstring

报警联系人邮箱。

test***@***.com
Dingstring

报警联系人钉钉群机器人 webhook 地址,参考文档:钉钉开发文档

https://oapi.dingtalk.com/robot/send?access_token=**********
Statusinteger

0:禁用,1:启用,默认启用。

1
XAttrsstring

如果是 k8s 任务类型,需要配置该参数 Job 任务:{"resource":"job"} Shell 任务:{"image":"busybox","resource":"shell"}

{"resource":"job"}

返回参数

名称类型描述示例值
object
Codeinteger

返回码。

200
Messagestring

附加信息。

message
RequestIdstring

请求唯一 ID。

39090022-1F3B-4797-8518-6B61095F1AF0
Successboolean

创建任务是否成功。取值如下:

  • true:创建任务成功。
  • false:创建任务失败。
true
Dataobject

任务详细信息。

JobIdlong

任务 ID。

92583
AccessDeniedDetailobject

访问被拒绝详细信息。

AuthActionstring

尝试执行的未授权操作。

AuthPrincipalDisplayNamestring

授权主体显示名称。

AuthPrincipalOwnerIdstring

授权主体所有者 ID。

AuthPrincipalTypestring

授权主体类型。

EncodedDiagnosticMessagestring

编码诊断信息。

NoPermissionTypestring

无权限类型。

PolicyTypestring

策略类型。

示例

正常返回示例

JSON格式

{
  "Code": 200,
  "Message": "message",
  "RequestId": "39090022-1F3B-4797-8518-6B61095F1AF0",
  "Success": true,
  "Data": {
    "JobId": 92583
  },
  "AccessDeniedDetail": {
    "AuthAction": "",
    "AuthPrincipalDisplayName": "",
    "AuthPrincipalOwnerId": "",
    "AuthPrincipalType": "",
    "EncodedDiagnosticMessage": "",
    "NoPermissionType": "",
    "PolicyType": ""
  }
}

错误码

访问错误中心查看更多错误码。

变更历史

变更时间变更内容概要操作
2024-10-21OpenAPI 返回结构发生变更查看变更详情
2023-03-30API 内部配置变更,不影响调用查看变更详情
2022-12-26API 内部配置变更,不影响调用查看变更详情
2022-09-29API 内部配置变更,不影响调用查看变更详情
2022-09-27OpenAPI 入参发生变更查看变更详情
2022-06-13OpenAPI 入参发生变更查看变更详情

创建 Java 任务

package com.alibaba.schedulerx.pop;

import java.util.ArrayList;
import java.util.List;

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.schedulerx2.model.v20190430.CreateJobRequest;
import com.aliyuncs.schedulerx2.model.v20190430.CreateJobRequest.ContactInfo;
import com.aliyuncs.schedulerx2.model.v20190430.CreateJobResponse;

public class CreateJavaJob {

    public static void main(String[] args) throws Exception {
     //  OpenAPI 的接入点,可查看产品支持的地域列表或根据购买产品的地域填写。
        String regionId = "cn-shanghai";
        //鉴权使用的 AccessKey ID,由阿里云官网控制台获取。
        String accessKeyId = "<yourAccessKeyId>";
        //鉴权使用的 AccessKey Secret,由阿里云官网控制台获取
        String accessKeySecret = "<yourAccessKeySecret>";
        //产品名称。
        String productName ="schedulerx2";
        //对照支持地域列表选择 Domain 填写。
        String domain ="schedulerx.cn-shanghai.aliyuncs.com";
        //构建 OpenAPI 客户端。
        DefaultProfile.addEndpoint(regionId, productName, domain);
        DefaultProfile defaultProfile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);
        DefaultAcsClient client = new DefaultAcsClient(defaultProfile);
        
        CreateJobRequest request = new CreateJobRequest();
        request.setJobType("java");
        request.setExecuteMode("standalone");
        request.setDescription("test");
        request.setName("helloworld");
        request.setClassName("com.alibaba.schedulerx.test.helloworld");
        request.setTimeType(1);
        request.setTimeExpression("0 0/10 * * * ?");
        request.setNamespace("xxxxx");
        request.setGroupId("xxxxxxx");
        // monitor
        request.setTimeoutEnable(true);
        request.setTimeoutKillEnable(true);
        request.setFailEnable(true);
        request.setTimeout(12300L);
        List<ContactInfo> contactInfosList = new ArrayList<>();
        ContactInfo contactInfo1 = new ContactInfo();
        contactInfo1.setUserName("userA");
        contactInfo1.setUserPhone("1381111****");
        ContactInfo contactInfo2 = new ContactInfo();
        contactInfo2.setUserName("userB");
        contactInfo2.setUserPhone("1382222****");
        contactInfosList.add(contactInfo1);
        contactInfosList.add(contactInfo2);
        request.setContactInfos(contactInfosList);
        // attrs
        //request.setQueueSize(123);
        request.setTaskMaxAttempt(1);
        request.setTaskAttemptInterval(100);
        CreateJobResponse response = client.getAcsResponse(request);
        if (response.getSuccess()) {
            System.out.println("jobId=" + response.getData().getJobId());
        } else {
            System.out.println(response.getMessage());
        }
    }

}

创建 HTTP 任务

package com.alibaba.schedulerx.pop;

import com.alibaba.schedulerx.common.domain.HttpAttribute;
import com.alibaba.schedulerx.common.util.JsonUtil;

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.schedulerx2.model.v20190430.CreateJobRequest;
import com.aliyuncs.schedulerx2.model.v20190430.CreateJobResponse;

public class CreateHttpJob {

    public static void main(String[] args) throws Exception {
     // OpenAPI 的接入点,具体查看支持地域列表或根据购买地域填写。
        String regionId = "cn-shanghai";
        //鉴权使用的 AccessKey ID,由阿里云官网控制台获取。
        String accessKeyId = "<yourAccessKeyId>";
        //鉴权使用的 AccessKey Secret,由阿里云官网控制台获取。
        String accessKeySecret = "<yourAccessKeySecret>";
        //产品名称。
        String productName ="schedulerx2";
        //对照支持地域列表选择 Domain 填写。
        String domain ="schedulerx.cn-shanghai.aliyuncs.com";
        //构建 OpenAPI 客户端。
        DefaultProfile.addEndpoint(regionId, productName, domain);
        DefaultProfile defaultProfile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);
        DefaultAcsClient client = new DefaultAcsClient(defaultProfile);
        
        CreateJobRequest request = new CreateJobRequest();
        request.setNamespace("xxxxxxxx");
        request.setGroupId("xxxxxx");
        request.setJobType("http");
        request.setName("testHttpJob");
        request.setDescription("testHttpJob");
        request.setTimeType(1);
        request.setTimeExpression("20 0/5 * * * ?");
        request.setExecuteMode("standalone");
        HttpAttribute httpAttribute = new HttpAttribute();
        httpAttribute.setUrl("http://192.168.0.0:8080/test");
        httpAttribute.setMethod("GET");
        httpAttribute.setTimeout(10); //单位秒
        httpAttribute.setRespKey("code");
        httpAttribute.setRespValue("200");
        request.setContent(JsonUtil.toJson(httpAttribute));
        //POST 参数,格式 key1=value1&key2=value2。
        request.setParameters("key1=value1&key2=value2");   
        
        //发送请求。
        CreateJobResponse response = client.getAcsResponse(request);
        if (!response.getSuccess()) {
            System.out.println(response.getMessage());
            System.out.println("createApp: "+response.getRequestId());
        } else {
            System.out.println(JsonUtil.toJson(response));
        }
    }
    
}

创建一次性任务

package com.alibaba.schedulerx.pop;

import java.util.ArrayList;
import java.util.List;

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.schedulerx2.model.v20190430.CreateJobRequest;
import com.aliyuncs.schedulerx2.model.v20190430.CreateJobRequest.ContactInfo;
import com.aliyuncs.schedulerx2.model.v20190430.CreateJobResponse;

public class CreateJavaJob {

    public static void main(String[] args) throws Exception {
     // OpenAPI 的接入点,可查看产品支持的地域列表或根据购买产品的地域填写。
        String regionId = "cn-shanghai";
        //鉴权使用的 AccessKey ID,由阿里云官网控制台获取
        String accessKeyId = "xxxxxx";
        //鉴权使用的 AccessKey Secret,由阿里云官网控制台获取
        String accessKeySecret = "xxxxxxxx";
        //产品名称
        String productName ="schedulerx2";
        //对照支持地域列表选择 Domain 填写
        String domain ="schedulerx.cn-shanghai.aliyuncs.com";
        //构建 OpenAPI 客户端
        DefaultProfile.addEndpoint(regionId, productName, domain);
        DefaultProfile defaultProfile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);
        DefaultAcsClient client = new DefaultAcsClient(defaultProfile);
        
        CreateJobRequest request = new CreateJobRequest();
        request.setJobType("java");
        request.setExecuteMode("standalone");
        request.setDescription("test");
        request.setName("helloworld");
        request.setClassName("com.alibaba.schedulerx.test.helloworld");
        request.setTimeType(5);
        request.setTimeExpression("2021-12-30 12:12:12");
        request.setNamespace("xxxxxx");
        request.setGroupId("xxxxxxx");
        // 报警监控
        request.setTimeoutEnable(true);
        request.setTimeoutKillEnable(true);
        request.setFailEnable(true);
        request.setTimeout(12300L);
        // 高级配置
        request.setMaxAttempt(3);
        request.setAttemptInterval(30);
        CreateJobResponse response = client.getAcsResponse(request);
        if (response.getSuccess()) {
            System.out.println("jobId=" + response.getData().getJobId());
        } else {
            System.out.println(response.getMessage());
        }
    }
    
}